print("===================列表:有序、可切片、内容可变=======================")
"""
列表
当做栈使用：append()为入栈， pop()为 出栈
当做队列来使用
"""
spam = ['cat', 'bat', 'rat', 'elephant', 'abc']
spam[1] = 'aardvark'
spam[-1] = 12345
spam.append('moose')
spam.insert(1, 'chicken')
del spam[2]
spam.remove(12345)
print('cat' not in spam)
print(spam[-1], spam[-2])
print(spam[1:2])
print(spam.index('moose'))
spam.sort()
print(spam)

print("===================元组:几乎与列表数据类型一样,但元组是不可变的=======================")
eggs = ('hello', 42, 0.5)
print(eggs)
print(eggs[0], eggs[1])
# 列表转元组
print(tuple(spam))
# 元组转列表
print(list(eggs))

"""
import copy
Python提供了名为copy的模块，其中包含copy()和deepcopy()函数。
copy.copy()，可以用来复制列表或字典这样的可变值，而不只是复制引用。
如果要复制的列表中包含了列表，那就使用copy.deepcopy()函数来代替，deepcopy()函数将同时复制它们内部的列表
"""

print("===================集合（set）是一个无序的不重复元素序列=======================")
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
print(basket)
print('orange' in basket)
# 集合运算.
a = set('abracadabra')
b = set('alacazam')
print(a - b)  # 集合a中包含而集合b中不包含的元素
print(a | b)  # 集合a或b中包含的所有元素
print(a & b)  # 集合a和b中都包含了的元素
print(a ^ b)  # 不同时包含于a和b的元素
#  集合添加元素
thisset = set(("Google", "Runoob", "Taobao"))  # 元组转集合
thisset.add("Facebook")  # 添加元素
thisset.update({1, 3})  # 添加元素
thisset.update([1, 4], [5, 6])  # 添加元素
print(thisset)

# 移除集合中的元素
thisset.remove("Taobao")
thisset.discard("Facebook")  # 不存在不会发生错误
print(thisset)
print(thisset.pop())  # 随机删除集合中的一个元素，返回删除的元素
print(thisset)

thisset.clear()  # 移除集合中的所有元素
print(len(thisset))
